The representation of images using digital data has become commonplace. Recent improvements in transmission systems and storage devices have made the use of digital images practical in a wide variety of applications including, for example, cable television.
The amount of bandwidth available for the delivery of data, e.g., digital images, to customer premises, has increased over time as transmission technology has improved. In addition, the cost for memory and other types of storage which can be used to store digital data has steadily decreased over time. This has resulted in consumer devices with ever increasing amounts of memory.
Even with recent improvements in transmission and data storage, the relatively large size of digital images and the cost advantages of storing or transmitting digital images continues to encourage the use of data compression prior to the transmission of images and/or the storage of digital images.
A fair amount of effort has been put into developing image formats and corresponding compression algorithms which are optimized to achieve good data compression for a wide range of image and/or streaming video applications. Various image encoding schemes, also sometimes called compression methods, have developed to a point which image data may be encoded and decoded in multiple passes, with a portion of the image data being encoded or decoded in each pass. Systems which allow for partial decoding of an image can be desirable in streaming applications where a user may wish to see a low resolution image or a portion of an image before downloading the data corresponding to the full high quality image. Unfortunately, while such encoding algorithms work well for many applications, the complexity of such encoding methods can be a disadvantage in applications where there is limited processing power available or it would be desirable to limit the amount of processing power used, e.g., for cost reasons.
Various data formats and compression algorithms have been developed specifically for the purpose of representing images in a digital format and/or for compressing digital image data. Examples of image data formats and compression algorithms can be found in the JPEG standard, the MPEG standard, and other standards which are known from the commonly used acronyms PNG, BMP and IMG. These compression algorithms often require knowledge of the image location to which particular pixel values correspond with values corresponding to different image locations being grouped and/or processed differently from a compression perspective.
One particular application where digital images are used involves devices which include an embedded application, e.g., a user interface application, which uses images. A Set Top Box (STB) is an example of a device which normally includes an embedded user interface application. STBs are commonly used in cable television applications. Satellite receivers which are coupled to televisions or other display devices are another example of what may be called a Set Top Box.
STBs normally include a dedicated rendering circuit, sometimes called a rendering engine, which performs the processing required to prepare an image represented as a set of pixel values for display on a display device, e.g., the display of a TV set or computer monitor. Rendering circuits normally do not perform data decompression operations or image format conversions. Thus, rendering circuits usually expect the image input data to be in a specific format, e.g., RGB format with or without alpha values, for which the rendering circuit was designed. The rendering circuit is normally designed to work with a specific image input format, e.g., a format used for the pixel values that are the data which represents an image to be displayed. The specific input image data format with which the rendering circuit of an STB is designed to work is the native format of the rendering circuit. The native format of the rendering circuit is often called the native image format of the STB. Since the native image format is determined prior to manufacture of the STB, the native image format is a predetermined format with regard to a given rendering circuit and thus set top box which includes the rendering circuit.
While the rendering circuit requires that data be received by the rendering circuit in a particular format, e.g., the STB's native image format, the rendering circuit will proceed to perform specific image processing operations associated with generating control values which are used to control a particular display device to which the rendering circuit is coupled. Thus, a rendering circuit may generate different control values for a CRT display than it would for an LCD display, e.g., because each of the different types of displays have different light output characteristics.
In the case of STBs, a general purpose CPU in the STB is often responsible for generating menus from stored image data and for outputting other images which may be loaded into the STB memory such as company logos, error information, etc. This functionality is commonly part of a user interface which may be implemented as a routine that is executed by the general purpose processor within the STB.
Images used by a user interface are usually relatively small, e.g., each image may be intended to occupy only a portion of a screen as opposed to the full display screen.
In at least one existing system, images intended for a user interface of a STB are first generated in an image format which uses the same number of bits for each of the Red, Green and Blue color components associated with a pixel, e.g., the image is generated in the RGB 888 format. The generated image is then processed and compressed using a known image standard such as PNG which processes all of the original image bits plus 1 to 8 bits of alpha blending data when present. PNG processing involves subjecting the image data to a complicated series of processing rules along with a well known image compression scheme intended to arrive at an optimized image which can be decoded and displayed in multiple passes. Existing formats such as PNG are widely used because of their relatively small output, ability to display an image prior to full decoding of the image, e.g., show something sooner rather than later, with the complete image being displayed after multiple decoding passes. Set top boxes do not require the ability to display an image in multiple passes and therefore the complexity associated with such processing is wasteful in the context of a STB implementation.
In existing systems, the user interface in a STB, generally referred to as a Resident Application (“RA”) uses several graphic images of varying shapes and sizes arranged under control of the user interface routine in an arrangement that will be sensible and pleasing to a user when viewed. The images that are used by a STB user interface application are normally created and stored in one of a plurality of well known image formats and then compressed using a video encoding method intended for the particular image format and/or for a wide range of image applications. Accordingly, images used by the user interface of a STB are presently generated and then stored in a well known image compression format such as, e.g., JPEG, PNG, BMP, etc. Since such formats were designed and intended for general image applications they are not necessarily the best format for the STB specific applications and often necessitate the use of specific processor intensive decoding algorithms which produce decoded image formats which are different from the format used by a set top box.
Accordingly, not only is a fair amount of processing required to decode images encoded using many of the well known encoding algorithms, but additional processing is then often required to convert the decoded image into the image format which is used as the input to the STB's image rendering circuit. This often involves altering the number of bits used to represent color data and/or making other pixel value changes before the image can be supplied to the STB's rendering circuitry.
In view of the above discussion, it should be appreciated that improvements in image coding and processing which can reduce STB image processing requirements and/or the amount of data required to represent an image used by a STB, e.g., in providing a user interface, would be desirable.
Image compression and processing techniques that will allow for reductions in processing power required for a general purpose computer in a set top box are particularly desirable because they can allow for less powerful processors to be used which can have the effect of lowering the cost of set top boxes.